import axios from "axios";

// 创建axios实例
const apiClient = axios.create({
    baseURL: "http://localhost:3000",
    timeout: 10000,
    headers: {
        "Content-Type": "application/json",
    },
});

// 请求拦截器
apiClient.interceptors.request.use(
    (config) => {
        // 从localStorage获取token
        const token = localStorage.getItem("token");
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }
        return config;
    },
    (error) => {
        // 对请求错误做些什么
        return Promise.reject(error);
    }
);

// 响应拦截器
apiClient.interceptors.response.use(
    (response) => {
        // 对响应数据做点什么
        return response;
    },
    (error) => {
        // 处理错误响应
        if (error.response) {
            // 服务器返回错误状态码
            console.error(
                "API错误:",
                error.response.status,
                error.response.data
            );

            // 如果是401未授权，可能是token过期，清除登录状态
            if (error.response.status === 401) {
                localStorage.removeItem("token");
                localStorage.removeItem("user");
                // 可以在这里添加重定向到登录页的逻辑
            }
        } else if (error.request) {
            // 请求已发出但没有收到响应
            console.error("网络错误:", error.request);
        } else {
            // 请求设置时发生错误
            console.error("请求错误:", error.message);
        }

        return Promise.reject(error);
    }
);

// 用户相关API
export const userApi = {
    // 登录
    login(credentials) {
        return apiClient.post("/login", credentials);
    },
    // 获取用户信息
    getUserInfo(id) {
        return apiClient.get(`/users/${id}`);
    },
};

// 文章相关API
export const postApi = {
    // 获取所有文章
    getPosts() {
        return apiClient.get("/posts");
    },
    // 获取单个文章
    getPost(id) {
        return apiClient.get(`/posts/${id}`);
    },
    // 创建文章
    createPost(post) {
        return apiClient.post("/posts", post);
    },
    // 更新文章
    updatePost(id, post) {
        return apiClient.put(`/posts/${id}`, post);
    },
    // 删除文章
    deletePost(id) {
        return apiClient.delete(`/posts/${id}`);
    },
};

// 分类相关API
export const categoryApi = {
    // 获取所有分类
    getCategories() {
        return apiClient.get("/categories");
    },
    // 获取单个分类
    getCategory(id) {
        return apiClient.get(`/categories/${id}`);
    },
};

// 标签相关API
export const tagApi = {
    // 获取所有标签
    getTags() {
        return apiClient.get("/tags");
    },
    // 获取单个标签
    getTag(id) {
        return apiClient.get(`/tags/${id}`);
    },
};

// 评论相关API
export const commentApi = {
    // 获取文章评论
    getCommentsByPostId(postId) {
        return apiClient.get("/comments", {
            params: { postId },
        });
    },
    // 添加评论
    addComment(data) {
        return apiClient.post("/comments", data);
    },
};

export default apiClient;
